The present invention relates in general to data processing systems, and in particular, to real time input/output interfacing in a data processing system.
Modern data processing systems commonly use signal processing hardware, and associated device drivers, supplied by third-party vendors. For example, audio processing systems in personal computers typically are obtained from one of several third-party vendors, for example, Creative Technology, Ltd. (SoundBlaster(copyright)), ESS Technologies, Inc., Crystal Semiconductor, and Yamaha. In data processing systems that provide real time responses to processed audio signals, the time constraints imposed by the real time responses may be incompatible with an audio processing device used in a particular data processing system. In such instances, the data processing application may fail due to an error from the audio application programming interface (API) call, or the graphical display may not fully represent actual real time conditions as audio is being input, i.e., there may be large intervals of time when critical audio data is missing with resulting gaps of data on the display device. In addition, when audio is being output there may be artifacts, such as portions of missing audio.
For example, a speech therapy application requires a real time visual response to audio I/O. Such speech therapy applications are used to train persons with hearing impairments, and require real time visual responses driven by changes in speech attributes articulated by the user. With respect to audio output, a visual graphic, which may be generically referred to as a cursor, must be coordinated, in real time, with an audio output signal. In speech therapy applications, a flying cursor is typically associated with the visual output, and tracks the audio being played back. For example, frequency components in the audio signal being played back may be displayed as a function of time, and a flying cursor used to visually track the corresponding portion of the spectrum with the audio being played. Thus, the data processing system must ensure that the cursor is synchronized with the audio signal being played. However, the interrupt rate supported by third-party audio system vendors may not be sufficient to output audio data when it is sent. As a consequence, the synchronism between a flying cursor and the audio output signal may be lost.
Thus, there is a need in the art for methods and apparatus to synchronize audio I/O systems with real time data processing applications.
The aforementioned needs are addressed by the present invention. Accordingly, there is provided, in a first form, a method for device driver interfacing. The method includes probing a device driver to determine a first data block size supported by a device driver interrupt rate. The method also synchronizes a graphical display to a sequence of output data signals, wherein the sequence of output data signals are operable for outputting as a sequence of second, predetermined, data block sizes.
There is also provided, in a second form, a data processing system that includes circuitry operable for probing a device driver to determine a first data block size supported by a device driver interrupt rate. The system also contains circuitry operable for synchronizing a graphical display to a sequence of output data signals, wherein the sequence of output data signals are operable for outputting as a sequence of second, predetermined, data block sizes.
Additionally, there is provided, in a third form, a computer program product operable for storing in a machine readable storage medium, the program product operable for device driver interfacing. The program product includes programming for probing a device driver to determine a first data block size supported by a device driver interrupt rate. Also provided in the computer program product, there is included programming for synchronizing a graphical display to a sequence of output data signals, wherein the sequence of output data signals are operable for outputting as a sequence of second, predetermined, data block sizes.
There is also provided, in a first form, an alternative embodiment of a method for device driver interfacing. The method includes probing a device driver to determine a first data block size supported by a device driver interrupt rate. Device driver probing step accesses a buffer having a plurality of entries, each entry being operable for storing a number of data samples and wherein the number of samples corresponds to a, selectable, size of each entry. The probing step also constitutes receiving a first plurality of data samples from the device driver, wherein the first plurality of data samples completely fills one or more of the plurality of entries, incrementing a first counter by a value corresponding to a number of the one or more of the plurality of entries filled in the receiving step, and incrementing a second counter by one in response to the accessing of the buffer.
There is also provided, in a second form, an alternative embodiment of a data processing system that includes circuitry operable for probing a device driver to determine a first data block size supported by a device driver interrupt rate. The probing circuitry contains circuitry operable accessing a buffer having a plurality of entries, each entry being operable for storing a number of data samples and wherein the number of samples corresponds to a, selectable, size of each entry, and circuitry operable for receiving a first plurality of data samples from the device driver, wherein the first plurality of data samples completely fills one or more of the plurality of entries. The probing circuitry also includes circuitry operable for incrementing a first counter by a value corresponding to a number of the one or more of the plurality of entries filled in the receiving step, and circuitry operable for incrementing a second counter by one in response to the accessing of the buffer.
Additionally, there is provided, in a third form, an alternative embodiment of a computer program product operable for storing in a machine readable storage medium, the program product operable for device driver interfacing. The program product includes programming for probing a device driver to determine a first data block size supported by a device driver interrupt rate. Also provided in the computer program product, is programming for accessing a buffer having a plurality of entries, each entry being operable for storing a number of data samples and wherein the number of samples corresponds to a, selectable, size of each entry, programming for receiving a first plurality of data samples from the device driver, wherein the first plurality of data samples completely fills one or more of the plurality of entries, and programming for incrementing a first counter by a value corresponding to a number of the one or more of the plurality of entries filled in the receiving step. The programming further contains programming for incrementing a second counter by one in response to the accessing of the buffer.
Additionally, there is also provided, in a first form, another alternative embodiment of a method for device driver interfacing. The method constitutes synchronizing a graphical user interface (GUI) to output data signals, wherein the output data signals are operable for outputting as a sequence of second, predetermined, data block sizes. The synchronization step includes incrementing a first counter in response to sending a first set of output data signals to the device driver, wherein the first counter points to a first entry in a buffer, each entry containing a data value corresponding to a data signal set number, and wherein the first entry contains a data set number corresponding to the first set, and incrementing a second counter in response to the device driver outputting a device output signal corresponding to a second set of data signals, the second counter pointing to a second entry, the second entry containing a data signal set number corresponding the second set.
There is also provided, in a second form, another alternative embodiment of a data processing system. The data processing system includes circuitry operable for synchronizing a graphical user interface (GUI) to output data signals, wherein the output data signals are operable for outputting as a sequence of second, predetermined, data block sizes. the synchronizing circuitry includes circuitry operable for incrementing a first counter in response to sending a first set of output data signals to the device driver, wherein the first counter points to a first entry in a buffer, each entry containing a data value corresponding to a data signal set number, and wherein the first entry contains a data set number corresponding to the first set, and circuitry operable for incrementing a second counter in response to the device driver outputting a device output signal corresponding to a second set of data signals, the second counter pointing to a second entry, the second entry containing a data signal set number corresponding the second set.
Additionally, there is provided, in a third form, another alternative embodiment of a computer program product operable for storing in a machine readable storage medium, the program product operable for device driver interfacing, in which the program product contains programming for synchronizing a graphical user interface (GUI) to output data signals, wherein the output data signals are operable for outputting as a sequence of second, predetermined, data block sizes. The synchronization programming includes programming for incrementing a first counter in response to sending a first set of output data signals to the device driver, wherein the first counter points to a first entry in a buffer, each entry containing a data value corresponding to a data signal set number, and wherein the first entry contains a data set number corresponding to the first set. Also included is programming for incrementing a second counter in response to the device driver outputting a device output signal corresponding to a second set of data signals, the second counter pointing to a second entry, the second entry containing a data signal set number corresponding the second set.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.